package com.xiaojiezhu.netty.base.demo.discard;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;

/**
 * @Author 朱小杰
 * 时间 2017-07-10 .23:25
 * 说明 收到就丢弃消息
 */
public class DiscardServiceHandler extends ChannelInboundHandlerAdapter {

    /**
     * 当读取的消息的时候
     * 默认收到的msg是一个ByteBuf，这个是一个计数器对象，必须调用release()方法来释放才行
     * @param ctx
     * @param msg
     * @throws Exception
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//        ByteBuf buf = (ByteBuf) msg;
//        buf.release();
        ReferenceCountUtil.refCnt(msg);
    }

    /**
     * 当发生异常的时候关闭连接
     * @param ctx
     * @param cause
     * @throws Exception
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        cause.printStackTrace();
        ctx.close();
    }
}
